home *** CD-ROM | disk | FTP | other *** search
/ Fifty: Elektronik / FIFTY Elektronik (PS_Computer_Vertrieb).iso / ps8 / fty1017 / gepackt.exe / DISK2 / PLOTSRC.EXE / GEOTOOL.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-11-10  |  4.2 KB  |  164 lines

  1. {$R-,B-}
  2. Unit GEOTOOL;
  3.  
  4. Interface
  5.  
  6. uses
  7.   GEDDEFS;
  8.  
  9. Const FastNull   :Real=1E-10;
  10.       Pi_halbe   :Real=1.5707963267949;
  11.       Pi_2       :Real=6.28318530717959;
  12.       Ln10       :Real=2.30258509299405;
  13.  
  14.  
  15. Type     Vektor   =Record
  16.                    X,Y :Real;
  17.                   end;
  18.         Gerade    =Record
  19.                     Ort,Richtung: Vektor;
  20.                    end;
  21.         Bogen     =Record
  22.                     Mitte :Vektor;
  23.                     RadiusX,RadiusY :Real;
  24.                     Alpha,Beta,Theta :Real;
  25.                    end;
  26.  
  27. Const     Nullpunkt:Vektor =(X:0;Y:0);
  28.  
  29. Type  SpiegelPar =Record
  30.                    A11,A12,A21,A22,Ex,Ey :Real;
  31.                    Phiaxis  :Integer;
  32.                    MirrText :Boolean;
  33.                  end;
  34.  
  35. Const Yaxis :Spiegelpar =(A11: -1.0; A12: 0.0;
  36.                           A21:  0.0; A22: 1.0;
  37.                           Ex:   0.0; Ey:  0.0;
  38.                           Phiaxis :90;
  39.                           MirrText:false);
  40.  
  41. Procedure Vect_Diff(Var A,B,S :Vektor);
  42.  
  43. Procedure Vect_Sum(Var A,B,S :Vektor);
  44.  
  45. Procedure Vect_Scale(Var V:Vektor;M:Real);
  46.  
  47. Procedure Vect_Ortho(A: Vektor;Var N :Vektor);
  48.  
  49. Function  Bogenmass(Phi:Real):Real;
  50.  
  51. Function  Winkelmass(Phi:Real):Real;
  52.  
  53. Function  Winkel(X,Y:Real):Real;
  54.  
  55. Procedure Normalize_Real(Var Phi :Real);
  56.  
  57. Procedure Norm_CircPhi_Real(Var Alpha,Beta :Real);
  58.  
  59. Function DeltaPhi(Phi1,Phi2:Real):Real;
  60.  
  61. Procedure Normalize(Var Phi :Integer);
  62.  
  63. Procedure Norm_CircPhi(Var Alpha,Beta :Integer);
  64.  
  65. Function CalcPhi(X,Y :Real):Integer;
  66.  
  67. Procedure Rotiere(Var X,Y:Real;Phi :Real);
  68.  
  69. Function  Laenge(X,Y :Real):Real;
  70.  
  71. Function  Distanz(X1,Y1,X2,Y2 :Real):Real;
  72.  
  73. Function  Distanz_VV(Var V1,V2 :Vektor):Real;
  74.  
  75. Function  Loese_QGl(A,B,C :Real;Var X1,X2 :Real):Integer;
  76. {0 =keine, 1,2 eine Reelle Lösung, -1 :Linarer Fall (A=0) }
  77.  
  78. Function InArc(Alpha,Beta,Phi :Real):Boolean;
  79.  
  80. Function Scalar_Prod(A,B :Vektor):Real;
  81.  
  82. Procedure Tausche(Var X,Y :Real);
  83.  
  84. Procedure Exchange(Var X,Y :Integer);
  85.  
  86. Function Loese_LinGL2(Var A,A1,B :Vektor;Var X :Vektor):Boolean;
  87.  
  88. Function HNF(Var G:Gerade):Boolean;
  89.  
  90. Function Make_Gerade(X1,Y1,X2,Y2:Real;Var G:Gerade):Boolean;
  91.  
  92. Function Schnitt_GG(Var G1,G2 :Gerade; Var P :Vektor):Boolean;
  93.  
  94. Function Abstand(G:Gerade;P:Vektor):Real;
  95.  
  96. Function Winkel_halb(G1,G2 : Gerade;P:Vektor;Var G3 :Gerade):Boolean;
  97.  
  98. Function Lot(Var G1: Gerade;P:Vektor;Var PL :Vektor;Var GL :Gerade):Boolean;
  99.  
  100. Function Parallele(Var G1:Gerade;Var P1:Vektor; Var GP :Gerade):Boolean;
  101.  
  102. Procedure KreisKoord(Rx,Ry,Phi :Real;Var Cx,Cy :Real);
  103.  
  104. Function KreisPhi(Var X,Y :Real;Var K:Bogen):Real;
  105.  
  106. Function GetKreisPhi(Var P:Vektor;Var K:Bogen):Real;
  107.  
  108.  
  109. Procedure Norm_KoordSys(Var V, V0 :Vektor;Phi:Real);
  110.  
  111. Procedure Regen_KoordSys(Var V, V0 :Vektor;Phi:Real);
  112.  
  113. Procedure Get_P_G(Var G1 :Gerade;Var P:Vektor;Sigma :Real);
  114.  
  115. Function Tangente(K1 :Bogen;P1 :Vektor;Var PB1,PB2 :Vektor):Integer;
  116.  
  117. Function Polare(K1 :Bogen;P1:Vektor;Var P2,P3 :Vektor;Var G:Gerade):Boolean;
  118.  
  119. Function  Schnitt_KG(G1 :Gerade;K1:Bogen;
  120.                      Var P1,P2 :Vektor):Integer;
  121.  
  122. Function  Kreis_3P(P1,P2,P3 :Vektor;Var K:Bogen):Integer;
  123. { 0 :Keine Lösung 1:Bogen ; 2:Strecke);
  124.  
  125. Function  Kreis_SEC(P1,P2:Vektor;Var K:Bogen):Boolean;
  126. { Schnittpunkt P1-M mit Kreis }
  127.  
  128. Procedure Koord_to_Vekt(Var K:Koord;Var V:Vektor);
  129.  
  130. Procedure Vekt_to_Koord(Var V:Vektor;Var K:Koord);
  131.  
  132. Function Linie_OK(Var O :Bildelement):Boolean;
  133.  
  134. Function Circle_OK(Var O :Bildelement):Boolean;
  135.  
  136. Function  GetObj_Kreis(Var K:Bogen; Var O:Bildelement):Boolean;
  137.  
  138. Function  GetKreis_Obj( Var O:Bildelement;Var K:Bogen):Boolean;
  139.  
  140. Function  GetObj_Gerade(Var P1,P2:Vektor; Var O:Bildelement):Boolean;
  141.  
  142. Function  GetGerade_Obj( Var O:Bildelement;Var G:Gerade):Boolean;
  143.  
  144. Procedure Mirror(Var Px,Py :integer; Spiegel :Spiegelpar);
  145.  
  146. Procedure GetSpiegel(Ax,Ay,Bx,By :Integer;Lot,TextMirr:Boolean;
  147.                      Var Spiegel :Spiegelpar);
  148.  
  149. Function ConvertRect(Var O:Bildelement;
  150.                       Var P1,P2,P3,P4 :Vektor;
  151.                       Var G1,G2,G3,G4 :Gerade):Boolean;
  152.  
  153. Implementation
  154.  
  155. (*$I GEOTOOL.INC *)
  156.  
  157. begin
  158.   Pi_halbe:=0.5*Pi;
  159.   Pi_2:=2.0*Pi;
  160.   LN10:=Ln(10);
  161. end.
  162.  
  163.  
  164.